﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace ThemeLoader
{
    public class DelegateResourceProvider : IResourceProvider
    {
        private Func<ResourceDictionary> resourceFactory;

        public DelegateResourceProvider(Func<ResourceDictionary> resourceFactory)
        {
            if (resourceFactory == null)
            {
                throw new ArgumentNullException("resourceFactory");
            }

            this.resourceFactory = resourceFactory;
        }

        public ResourceDictionary GetResourceDictionary()
        {
            return resourceFactory();
        }

        public object GetResource(string key)
        {
            var dictionary = resourceFactory();
            return dictionary[key];
        }
    }
}
